МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Звіт
Про виконання лабораторної роботи №3
Tема: «задача апроксимації»
Мета: навчитися будувати поліном Лагранжа для функції, заданої таблично та зображати отриманий многочлен графічно.
Завдання: Побудувати поліном Лагранжа для функції, заданої таблично та побудувати графік отриманого многочлена.
Варіант 11
№ точки
Значення функції
1
9,68e-07
2
2,13e-06
3
4,71e-06
4
1,02e-05
5
2,05e-05
6
4,19e-05
7
8,10e-05
8
1,45e-04
9
2,54e-04
10
4,37e-04
11
7,10e-04
12
1,12e-03
13
1,77e-03
Текст програми:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include<math.h>
#include "Unit1.h"
#include<math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TDiagramForm *DiagramForm;
double mas[14];
//---------------------------------------------------------------------------
__fastcall TDiagramForm::TDiagramForm(TComponent* Owner)
: TForm(Owner)
{
Chart1->Visible=false;
Label1->Visible=false;
DiagramForm->Height=700;
DiagramForm->Width=300;
}//---------------------------------------------------------------------------
void __fastcall TDiagramForm::BitBtn1Click(TObject *Sender)
{
mas[0]=StrToFloat(Edit1->Text);mas[1]=StrToFloat(Edit2->Text);
mas[2]=StrToFloat(Edit3->Text);mas[3]=StrToFloat(Edit4->Text);
mas[4]=StrToFloat(Edit5->Text);mas[5]=StrToFloat(Edit6->Text);
mas[6]=StrToFloat(Edit7->Text);mas[7]=StrToFloat(Edit8->Text);
mas[8]=StrToFloat(Edit9->Text);mas[9]=StrToFloat(Edit10->Text);
mas[10]=StrToFloat(Edit11->Text);mas[11]=StrToFloat(Edit12->Text);
mas[12]=StrToFloat(Edit13->Text);
double s,mas1[14];
s=0;
mas1[0]=mas[0];
int i;
for(i=1;i<13;i++)
{
s=s+mas1[i-1];
mas1[i]=mas[i]-s;
}
for(i=0;i<13;i++)
{
Label1->Caption= Label1->Caption + " " + "+x^" + IntToStr(i)+ "* "
+ FloatToStr(mas1[i]);
}
Chart1->Visible=true;
DiagramForm->Height=700;
DiagramForm->Width=1350;
float LEFT_LIMIT,RIGHT_LIMIT,STEP;
LEFT_LIMIT=-3.2;
RIGHT_LIMIT=3;
STEP=0.001;
float X ;
//Build graph with help TChart
for(float X=LEFT_LIMIT;X<RIGHT_LIMIT;X+=STEP)
{
Series1->Add((mas1[0]+mas1[1]*X+ mas1[2]*pow(X,2)+ mas1[3]*pow(X,3)
+ mas1[4]*pow(X,4)+ mas1[5]*pow(X,5)+ mas1[6]*pow(X,6)+ mas1[7]*pow(X,7)
+ mas1[8]*pow(X,8)+ mas1[9]*pow(X,9)+ mas1[10]*pow(X,10)+ mas1[11]*pow(X,11)
+ mas1[12]*pow(X,12)),FloatToStrF(X,ffFixed,3,3),clRed);
}
Edit1->Visible=false;Edit2->Visible=false;
Edit3->Visible=false;Edit4->Visible=false;
Edit5->Visible=false;Edit6->Visible=false;
Edit7->Visible=false;Edit8->Visible=false;
Edit9->Visible=false;Edit10->Visible=false;
Edit11->Visible=false;Edit12->Visible=false;
Edit13->Visible=false;Label1->Visible=true;
BitBtn1->Visible=false;
}
//---------------------------------------------------------------------------
Протокол роботи програми:
Висновок: на даній лабораторній роботі я навчився будувати поліном Лагранжа для функції, заданої таблично та зображати отриманий многочлен графічно.